#pragma once 

#include <iostream>
#include <string>
#include <sys/types.h>
#include <sys/socket.h>

//工具类
class Util
{
  public:
    static int Readline(int sock, std::string &out)
    {
      char ch = 'X';
      while(ch != '\n')
      {
        ssize_t s = recv(sock, &ch, 1, 0);
        if(s > 0)
        {
          if(ch == '\r')
          {
            recv(sock, &ch,  1, MSG_PEEK);
            if(ch == '\n')
            {
              //将\r\n 转为 \n
              //窥探成功， 这个字符一定存在
              recv(sock, &ch, 1, 0);
            }
            else 
            {
              ch = '\n';
            }
          }
          //1. 普通字符 2. \n
          out.push_back(ch);
        }
        else if(s == 0)
        {
          return 0;
        }
        else 
        {
          return -1; //出错 
        }
      }
      return out.size();
    }

    static bool CutString(const std::string &target, std::string &sub1_out, std::string &sub2_out, std::string seq)
    {
      size_t pos = target.find(seq);
      if(pos != std::string::npos)
      {
        sub1_out = target.substr(0, pos);
        sub2_out = target.substr(pos+seq.size());
        return true;
      }
      return false;
    }
};
